package skipManage

import (
	"github.com/gin-gonic/gin"
	"main/src/utils"
	"strconv"
)

func GetSkip(c *gin.Context) {
	body := &GetSkipDto{}

	if err := utils.ShouldBind(c, &body); err != nil {
		return
	}
	domains, err := body.Get(c)
	if err != nil {
		return
	}
	utils.Response(
		c,
		"ok",
		utils.Status.Ok,
		domains,
	)
}

func CreateSkip(c *gin.Context) {
	body := &CreateSkipDto{}
	if err := utils.ShouldBind(c, &body); err != nil {
		return
	}
	user, err := body.Create(c)
	if err != nil {
		return
	}

	utils.Response(
		c,
		"ok",
		utils.Status.Ok,
		user,
	)
}

func UpdateSkip(c *gin.Context) {
	body := &UpdateSkipDto{}
	if err := utils.ShouldBind(c, &body); err != nil {
		return
	}
	res, err := body.UpdateContent(c)
	if err != nil {
		return
	}
	utils.Response(
		c,
		"ok",
		utils.Status.Ok,
		res,
	)
}

func DeleteSkip(c *gin.Context) {
	body := &DeleteSkipDto{}
	if err := utils.ShouldBind(c, &body); err != nil {
		return
	}
	if err := body.Delete(c); err != nil {
		return
	}

	utils.Response(
		c,
		"ok",
		utils.Status.Ok,
		nil,
	)
}

// CatManage

func GetCat(c *gin.Context) {
	body := &GetCatDto{}

	if err := utils.ShouldBind(c, &body); err != nil {
		return
	}
	cats, err := body.Get(c)
	if err != nil {
		return
	}
	utils.Response(
		c,
		"ok",
		utils.Status.Ok,
		cats,
	)
}

func CreateCat(c *gin.Context) {
	body := &CreateCatDto{}
	if err := utils.ShouldBind(c, &body); err != nil {
		return
	}
	cat, err := body.Create(c)
	if err != nil {
		return
	}

	utils.Response(
		c,
		"ok",
		utils.Status.Ok,
		cat,
	)
}

func UpdateCat(c *gin.Context) {
	body := &UpdateSkipDto{}
	if err := utils.ShouldBind(c, &body); err != nil {
		return
	}
	res, err := body.UpdateContent(c)
	if err != nil {
		return
	}
	utils.Response(
		c,
		"ok",
		utils.Status.Ok,
		res,
	)
}

func DeleteCat(c *gin.Context) {
	body := &DeleteSkipDto{}
	if err := utils.ShouldBind(c, &body); err != nil {
		return
	}
	if err := body.Delete(c); err != nil {
		return
	}

	utils.Response(
		c,
		"ok",
		utils.Status.Ok,
		nil,
	)
}

func ExportFileBySkipView(c *gin.Context) {
	body := &ExportFileBySkip{}
	body.File, _ = c.FormFile("file")
	body.Cat, _ = strconv.Atoi(c.PostForm("cat"))
	ctn, err := body.Export(c)
	if err != nil {
		return
	}

	utils.Response(
		c,
		"ok",
		utils.Status.Ok,
		ctn,
	)
}
